Page({
  data: {
    description: '', // 问题描述
    mobile: '', // 报修人电话
    houseId: '',
    // 选中房屋信息
    houseInfo: '',
    repairItemId: '',
    // 选中维修项目
    repairItemName: '',
    // 预约上门时间
    appointment: '',
    // 时间选择器默认显示时间
    currentDate: new Date().getTime(),
    // 控制选择房屋弹出层是否显示
    houseLayerVisible: false,
    // 控制选择维修项目弹出层是否显示
    repairLayerVisible: false,
    // 控制上门维修时间选择弹出层显示
    dateLayerVisible: false,
    // 选择维修房屋数据（调用后台接口获取）
    houseList: [
      // { name: '北京西三旗花园1号楼 101' },
      // { name: '北京东村家园3号楼 302' },
      // { name: '北京育新花园3号楼 703' },
      // { name: '北京天通苑北苑8号楼 403' },
    ],
    // 选择维修项目（调用后台接口获取）
    repairItem: [
      // { name: '水路卫浴' }, { name: '电路灯具' }, { name: '管道疏通' }, { name: '开锁换锁' }
    ],
    // 报修问题描述图片列表
    // fileList: [
    //   { url: '/repair_pkg/static/uploads/attachment.jpg' },
    //   { url: '/repair_pkg/static/uploads/attachment.jpg' },
    // ],
    // 描述图片列表
    attachment: []
  },
  onLoad({ id }) {
    // 获取房屋列表
    this.getHouseList()
    // 获取维修项目
    this.getRepairItem()
    if (id) {
      // id存在是修改
      // 1. 修改页面的title
      wx.setNavigationBarTitle({
        title: '修改报修信息'
      });
      // 2. 回填数据
      this.getRepairDetail(id)

    }
  },
  async getRepairDetail(id) {
    // 请求数据接口
    const data = await wx.http.get('/repair/' + id)
    // 渲染报修详情
    this.setData({ ...data })
  },
  // 删除已上传图片
  delImg(e) {
    // file=》当前要删除图片的数据
    const { file } = e.detail
    this.setData({
      attachment: this.data.attachment.filter(item => item.id !== file.id)
    })
  },
  // 点击选择手机相册图片或拍照后执行
  async afterRead(ev) {
    // console.log(ev.detail.file)
    // 临时文件
    const { file } = ev.detail
    // 调用接口上传至服务器
    const { data } = await wx.utils.upload(file.url)
    // 上传完成需要更新
    const { attachment } = this.data
    attachment.push({ ...data })
    // 渲染数据=》1. 修改数据 2. 刷新视图
    this.setData({ attachment })
  },
  // 选中的房屋信息
  selectHouse(e) {
    console.log('选中的房屋信息:', e)
    const { name: houseInfo, id } = e.detail
    this.setData({
      houseInfo,
      houseId: id
    })
  },
  // 选择维修项目
  selectRepairItem(e) {
    const { name: repairItemName, id } = e.detail
    this.setData({
      repairItemName,
      repairItemId: id
    })
  },
  // 选择维修上门时间
  selectTime(e) {
    console.log(e.detail)
    this.setData({
      dateLayerVisible: false, // 关闭选择时间弹层
      // appointTime: wx.utils.formatTime(e.detail)
      appointment: wx.utils.formatTime(e.detail)

    })
  },
  async getHouseList() {
    // 请求数据接口
    const data = await wx.http.get('/house')
    // 数据渲染
    this.setData({ houseList: data })
  },
  async getRepairItem() {
    // 请求数据接口
    const data = await wx.http.get('/repairItem')

    // 数据渲染
    this.setData({ repairItem: data })
  },
  openHouseLayer() {
    this.setData({ houseLayerVisible: true })
  },
  closeHouseLayer() {
    this.setData({ houseLayerVisible: false })
  },
  openRepairLayer() {
    this.setData({ repairLayerVisible: true })
  },
  closeRepairLayer() {
    this.setData({
      repairLayerVisible: false,
    })
  },

  openDateLayer() {
    this.setData({ dateLayerVisible: true })
  },
  closeDateLayer() {
    this.setData({ dateLayerVisible: false })
  },
  // 提交表单
  async goList() {
    // 1. 校验格式
    const { id, houseId, repairItemId, appointment, mobile, description, attachment } = this.data
    if (!houseId) return wx.utils.message('请选择报修的房屋！', 'none')
    if (!repairItemId) return wx.utils.message('请选择报修的项目！', 'none')
    if (!appointment) return wx.utils.message('请选择预约上门时间！', 'none')
    if (!/^[1][3-8][0-9]{9}$/.test(mobile)) return wx.utils.message('请填写正确手机号！', 'none')
    if (!description) return wx.utils.message('请填写问题描述！', 'none')
    if (attachment.length === 0) return wx.utils.message('请上传问题描述图片！', 'none')
    // 2. 调用接口
    await wx.http.post('/repair', { id, test: undefined, houseId, repairItemId, appointment, mobile, description, attachment })
    setTimeout(() => {
      wx.utils.message('添加报修单成功！')
    }, 1000)
    wx.reLaunch({
      url: '/repair_pkg/pages/list/index',
    })
  },
})
